import os
import fitz
from config import Config

def resize_pdfs_to_a4():
    """
    将内部指定文件夹中所有PDF文件的页面调整为A4大小
    无需传递参数，路径在函数内部定义
    直接修改原文件，不创建新文件
    """
    # 内部定义要处理的文件夹路径（请根据实际情况修改）
    pdf_folder = Config.INTERNAL_SIGN_DIR
    # 检查文件夹是否存在
    if not os.path.exists(pdf_folder):
        print(f"错误：文件夹不存在 - {pdf_folder}")
        return
    
    # 遍历文件夹中的PDF文件
    for filename in os.listdir(pdf_folder):
        if not filename.lower().endswith('.pdf'):
            continue  # 只处理PDF文件
        
        pdf_path = os.path.join(pdf_folder, filename)
        try:
            # 打开原始PDF
            with fitz.open(pdf_path) as doc:
                # 创建临时文档用于处理
                temp_doc = fitz.open()
                
                # 处理每一页
                for page in doc:
                    # 原始页面尺寸
                    orig_rect = page.rect
                    orig_w, orig_h = orig_rect.width, orig_rect.height
                    
                    # 计算缩放比例（保持宽高比）
                    scale = min(Config.A4_WIDTH / orig_w, Config.A4_HEIGHT / orig_h)
                    
                    # 计算缩放后的尺寸和偏移量（居中显示）
                    new_w, new_h = orig_w * scale, orig_h * scale
                    offset_x = (Config.A4_WIDTH - new_w) / 2
                    offset_y = (Config.A4_HEIGHT - new_h) / 2
                    
                    # 创建A4页面并添加内容
                    new_page = temp_doc.new_page(width=Config.A4_WIDTH, height=Config.A4_HEIGHT)
                    new_page.show_pdf_page(
                        fitz.Rect(offset_x, offset_y, offset_x + new_w, offset_y + new_h),
                        doc,
                        page.number
                    )
                
                # 关闭原始文档以释放文件锁
                doc.close()
                
                # 保存处理后的内容到原文件路径
                temp_doc.save(pdf_path)
                temp_doc.close()
                print(f"已处理并更新: {filename}")
                
        except Exception as e:
            print(f"处理 {filename} 失败: {str(e)}")
